www.gusucode.com > 用于人脸识别和人脸定位的主动形状模型(asm)matlab工具箱 > asm toolbox\GetTrnSetCoor2.m
%%%%%%%%%%%%%%%%%%%%%%%%%% %(c) Ghassan Hamarneh 1999 %%%%%%%%%%%%%%%%%%%%%%%%%% %This file is added on July 6, 2004 in order to allow the user to load an %already labelled training set. %The labelled data can be in so many formats so I will now create the %functionality to load a particular data set. %%%%%%%%%%%%%%%%%%%%%%%%%% function [Xu,TrnImgFiles,ContoursEndingPoints,NumTrnSetImgs,NumLandMarkPts]=GetTrnSetCoor2 %function [Xu,TrnImgFiles,ContoursEndingPoints,NumTrnSetImgs,NumLandMarkPts]=GetTrnSetCoor2 DATA_TYPE = 'DTU_faces'; %http://www.imm.dtu.dk/~aam/datasets/datasets.html %DATA_TYPE = 'DTU_mrihearts'; Xu=[]; if strcmp (DATA_TYPE,'DTU_faces'), %loading data from DTU imgdir=uigetdir(pwd,'Choose the ** faces ** directory'); %dir of files %%% imgdir='H:\home\teaching\2004_2_SwedenSummerSchool\dtu_labelled_images\faces'; allfiles=dir(imgdir); %list of files ind1=1; for k=1:length(allfiles) filenm=allfiles(k).name; %name of each file [pathstr,name,ext] = fileparts(filenm); %parts of file if ~strcmp(filenm,'.') & ~strcmp(filenm,'..') & strcmp(ext,'.bmp') %an image file? add it to list of files and load the landmarks TrnImgFiles{ind1}=fullfile(imgdir,filenm); if ind1==1; %getting the size of the image (assume all the same) inf=imfinfo(TrnImgFiles{1}); wd=inf.Width; ht=inf.Height; end ind1=ind1+1; fd=fopen(fullfile(imgdir,[name,'.asf']),'rt'); for tt=1:9,fgetl(fd);end %skip 9 lines NumLandMarkPts=str2num(fgetl(fd)); %read num landmarks for tt=1:6,fgetl(fd);end %skip 6 lines for j=1:NumLandMarkPts, recordj=str2num(fgetl(fd)); X(j)=recordj(3)*wd; Y(j)=recordj(4)*ht; %used to find out the ContoursEndingPoints %hold on; plot(X(j),Y(j),'*'); j, pause end fclose(fd); Xu=[Xu,[round(X(:));round(Y(:))]]; end end ContoursEndingPoints=[13 21 29 34 39 47 58]; NumTrnSetImgs=length(TrnImgFiles); elseif strcmp (DATA_TYPE,'DTU_mrihearts'), %loading data from DTU imgdir=uigetdir(pwd,'Choose the ** mrihearts ** directory'); %dir of files %%%imgdir='H:\home\teaching\2004_2_SwedenSummerSchool\dtu_labelled_images\mrihearts'; allfiles=dir(imgdir); %list of files ind1=1; for k=1:length(allfiles) filenm=allfiles(k).name; %name of each file [pathstr,name,ext] = fileparts(filenm); %parts of file if ~strcmp(filenm,'.') & ~strcmp(filenm,'..') & strcmp(ext,'.bmp') %an image file? add it to list of files and load the landmarks TrnImgFiles{ind1}=fullfile(imgdir,filenm); if ind1==1; %getting the size of the image (assume all the same) inf=imfinfo(TrnImgFiles{1}); wd=inf.Width; ht=inf.Height; end ind1=ind1+1; fd=fopen(fullfile(imgdir,[name,'.asf']),'rt'); for tt=1:9,fgetl(fd);end %skip 9 lines NumLandMarkPts=str2num(fgetl(fd)); %read num landmarks for tt=1:6,fgetl(fd);end %skip 6 lines for j=1:NumLandMarkPts, recordj=str2num(fgetl(fd)); X(j)=recordj(3)*wd; Y(j)=recordj(4)*ht; %used to find out the ContoursEndingPoints %hold on; plot(X(j),Y(j),'*'); j, pause end fclose(fd); Xu=[Xu,[round(X(:));round(Y(:))]]; end end %%% ContoursEndingPoints=[13 21 29 34 39 47 58]; ContoursEndingPoints=[33 66]; NumTrnSetImgs=length(TrnImgFiles); end